package likou;

import java.util.*;

public class 字符重排序 {
    /**
     * 给定一个只包含大小写英文字母的字符串，需要将字符串中出现的字符按照一定的规则重新排序后输出。
     *
     * 排序规则如下：
     *
     * 1. 首先按照字符串里字符出现的频率降序排列
     *
     * 2. 对于频率相同的字符，则按照先大写后小写的顺序排列
     *
     * 3. 对于频率相同且大小写相同的字符，则按照字母的顺序排序，即 a/A 排在最前，z/Z 排在最后，中间的字母以此类推。
     */

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        System.out.println(gets(s));
    }
    public static String gets(String s){
        HashMap<Character, Integer> map = new HashMap<>();
        int len=s.length();
        for (int i = 0; i < len; i++) {
            char c=s.charAt(i);
                map.put(c,map.getOrDefault(c,0)+1);
            }
        StringBuilder res=new StringBuilder();
        HashMap<Character, Integer> temp = new HashMap<>(map);
        for (int i = 0; i < s.length(); i++) {
            for (char c:temp.keySet()) {
                temp.put(c,temp.get(c)-1);
                if (temp.get(c)==0){
                    for (int j = 0; j < map.get(c); j++) {
                        res.append(c);
                    }
                }

            }
        }
        return  res.reverse().toString();
    }



}
